package org.facyt.vacas.utils;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Vector;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.facyt.vacas.util.Constantes;

public class LeerArchivo {
	private static final Log logger = LogFactory.getLog(LeerArchivo.class);
	String url;
	String str = new String();
	Vector vector = new Vector();

	public LeerArchivo() {

	}

	public void leerArchivo(String urlNuevo) {
		url = new String(urlNuevo);
		vector = new Vector();
		try {
			BufferedReader br = new BufferedReader(new FileReader(url));
			while ((str = br.readLine()) != null) {
				this.vector.addElement((String) str);
			}

			// Then close the stream to the file.
			br.close();
		}
		// In the event the file can't be read,
		// BufferedReader throws an I/O exception.
		// When the exception is caught, print out
		// the error message, or stack trace,
		// to the console.
		catch (IOException ioe) {
			logger.error("", ioe);
		}
	}

	/**
	 * @return Devuelve vector.
	 */
	public Vector getVector() {
		return vector;
	}

	/**
	 * @param vector
	 *            El vector a setear.
	 */
	public void setVector(Vector vector) {
		this.vector = vector;
	}
	
public static void main1(String[] args){
		
		LeerArchivo l = new LeerArchivo();
		l.leerArchivo(Constantes.PathArchivos.getDirectorioTemporal()
				+ "Libro2.csv");
		Vector v = l.getVector();
		
		//mp * cp = 254 * 55 = 
		int filas = 13716;
		String[] lineas = new String[filas];
		
		Iterator<String> iter = v.iterator();		
		
		int mp = 0;
		int componente = 0;
		
		int fila = 0;
		iter.next();
		while(iter.hasNext()){
			mp++;
			String[] arreglo = ((String)iter.next()).split(";");
			
			componente = 0;
			for(int i = 0; i<arreglo.length; i++)
			{
				componente++;
				Double valor = new Double((String)arreglo[i]);
				
				String texto = "INSERT INTO composicion_mp(id, se_usa, cantidad, fk_materia_prima, fk_componente) VALUES (NEXTVAL('composicion_mp_id_seq'),"+valor+",true,"+mp+","+componente+");";
				
				lineas[fila] = texto;
				fila++;
			}
			
		}
		l.escribir(lineas);
		System.out.println("fin");
	}

private String escribir(String[] lineas) {
	BufferedWriter buffer = null;
	FileWriter fptrw = null;
	File file = null;
	try {
		String path = Constantes.PathArchivos.getDirectorioTemporal()
				+ "datos_vacas.txt";
		file = new File(path);
		fptrw = new FileWriter(path);
		buffer = new BufferedWriter(fptrw);

		if (lineas != null) {
			for (int i = 0; i < lineas.length; i++) {
				String linea = (String) lineas[i];
				
				if (linea != null && !linea.equalsIgnoreCase("")) {

					buffer.write(linea);
					buffer.flush();
					buffer.newLine();
				}
				else
					System.out.println("i: "+i +" - "+linea);
			}
		}

	} catch (IOException e) {
		return "Ocurrio un error escrinbiendo el archivo de formulacion";
	} finally {
		if (buffer != null) {
			try {
				buffer.close();
			} catch (IOException e) {

				return "Ocurrio un error cerrando el archivo de formulacion";
			}
		}

	}

	return null;
}
}